It is already known in automotive engine control systems as well as in other microcontroller systems to employ computer arrangements which have a central processor unit (CPU) to execute a control program and to have certain functions processed by a specialized adjunct unit which very efficiently operates on certain data by parallel processing. That is, several processors such as single instruction machines (SIMs) each having a list of instructions which are executed one at a time. A system timer triggers each processor in turn to execute one instruction during a single machine loop; the loop is repeated to enable each processor to continue through its agenda of instructions.
One example of such an adjunct system is a timer input/output (TIO) unit used with an engine control and is capable of monitoring several input signals to capture the time of a pulse edge and to accumulate the number of such edges, as well as to issue output pulses precisely at computed times. The input signals may, for example, represent engine speed and engine induction mass air flow, and the output pulses may be fuel injection or spark timing commands. The CPU interacts with the TIO to read or write information in a TIO RAM area.
In a multiprocessing or multi-tasking environment, variables related to one task are updated and referenced by the different processors and processes at different times. To guarantee the coherency and validity of the data, complex software algorithms are normally needed.
For example, an input capture algorithm captures the timer value upon the occurrence of a rising or a falling edge of a pulse and increments the corresponding edge counter. The tasks of incrementing the counter and capturing the time are carried out at different times by one of the instruction machines of the TIO. The CPU can read these values at a random time and has to make sure that it has read coherent values. If the CPU reads these values in between the updates of the time and the counter, non-coherent readings will be obtained. A processor can perform a complex and time consuming algorithm which again reads the values after a specific time and, if they have not changed, then declare them as coherent values.